package com.zenithmind.version.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

/**
 * 文件版本创建DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "文件版本创建DTO")
public class FileVersionCreateDTO {

    /**
     * 仓库ID
     */
    @NotBlank(message = "仓库ID不能为空")
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 提交ID
     */
    @NotBlank(message = "提交ID不能为空")
    @Schema(description = "提交ID")
    private String commitId;

    /**
     * 分支名称
     */
    @NotBlank(message = "分支名称不能为空")
    @Schema(description = "分支名称")
    private String branchName;

    /**
     * 文件路径
     */
    @NotBlank(message = "文件路径不能为空")
    @Schema(description = "文件路径")
    private String filePath;

    /**
     * 文件名称
     */
    @NotBlank(message = "文件名称不能为空")
    @Schema(description = "文件名称")
    private String fileName;

    /**
     * 文件类型
     */
    @Schema(description = "文件类型")
    private String fileType;

    /**
     * 文件大小
     */
    @Schema(description = "文件大小")
    private Long fileSize;

    /**
     * 变更类型
     */
    @Schema(description = "变更类型")
    private String changeType;

    /**
     * 文件内容
     */
    @Schema(description = "文件内容")
    private String content;

    /**
     * 文件哈希
     */
    @Schema(description = "文件哈希")
    private String fileHash;

    /**
     * 编码格式
     */
    @Schema(description = "编码格式")
    private String encoding;

    /**
     * 行数
     */
    @Schema(description = "行数")
    private Integer lineCount;

    /**
     * 是否为二进制文件
     */
    @Schema(description = "是否为二进制文件")
    private Boolean isBinary;
}
